package com.yl.chainStore.pojo.vo.pay

import com.baomidou.mybatisplus.annotation.TableField
import com.yl.chainStore.common.Constants
import com.yl.chainStore.common.enums.TypeEnum
import com.yl.chainStore.entity.pay.PayCustomerOrderDetail
import java.math.BigDecimal
import java.math.RoundingMode
import java.util.*

/**
 * 订单打印用
 */
data class PayOrderPrintShowVo(

	/**
	 * 标题
	 */
	var title:String ?= null,

	/**
	 * 类型
	 */
	var type :TypeEnum = TypeEnum.PAY_ORDER_PRINT_TYPE_NORMAL,

	/**
	 * 病历号
	 */
	var historyNum:String ?= null,

	/**
	 * 姓名
	 */
	var customerName:String ?= null,

	/**
	 * 订单号码
	 */
	var orderNum:String ?= null,

	/**
	 * 前欠金额
	 */
	var beforeOweMoney:Long  = 0,

	/**
	 * 总计应收
	 */
	var originalPrice:Long ?= null,

	/**
	 * 累计欠款
	 */
	var theCumulativeBalance:Long ?= null,

	/**
	 * 实际付款（当前）
	 */
	var amountMoney:Long ?= null,

	/**
	 * 收款人
	 */
	var collectionUserName:String ?= null,

	/**
	 * 医生
	 */
	var doctorNames:String ?= null,

	/**
	 * 护士
	 */
	var nurseNames:String ?= null,

	/**
	 * 收款方式
	 */
	var payMoneyShow:String ?= null,

	/**
	 * 分院电话
	 */
	var subCompanyPhone:String ?= null,

	/**
	 * 工作时间
	 */
	var workTimeShow:String ?= null,

	/**
	 * 收款时间
	 */
	var collectionTimeShow:Date = Date(),

	/**
	 * 地址
	 */
	var subCompanyAddress:String ?= null,

	/**
	 * 备注
	 */
	var remark:String ?= null,

	/**
	 * 订单明细
	 */
	var details :MutableList<PayCustomerOrderDetail>?= null,

	/**
	 * 创建时间
	 */
	var orderCreateTime:Date ?= null,

	/**
	 * 打印时间
	 */
	var printTime:Date ?= null,

	/**
	 * 余额
	 */
	var balance :Long ?= null,

	/**
	 * 馈赠金
	 */
	var giftsOfGold:Long ?= null,

	){

	var beforeOweMoneyShow: BigDecimal? = null
		get() {
			if (field == null) {
				return BigDecimal(beforeOweMoney.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
					2,
					RoundingMode.HALF_UP
				)
			}
			return field
		}


	var originalPriceShow: BigDecimal? = null
		get() {
			if(originalPrice == null){
				return null
			}

			if (field == null) {
				return BigDecimal(originalPrice!!.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
					2,
					RoundingMode.HALF_UP
				)
			}
			return field
		}

	var giftsOfGoldShow: BigDecimal? = null
		get() {
			if(giftsOfGold == null){
				return null
			}

			if (field == null) {
				return BigDecimal(giftsOfGold!!.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
					2,
					RoundingMode.HALF_UP
				)
			}
			return field
		}

	var theCumulativeBalanceShow: BigDecimal? = null
		get() {
			if(theCumulativeBalance == null){
				return null
			}

			if (field == null) {
				return BigDecimal(theCumulativeBalance!!.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
					2,
					RoundingMode.HALF_UP
				)
			}
			return field
		}


	var amountMoneyShow: BigDecimal? = null
		get() {
			if(amountMoney == null){
				return null
			}

			if (field == null) {
				return BigDecimal(amountMoney!!.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
					2,
					RoundingMode.HALF_UP
				)
			}
			return field
		}

	var balanceShow: BigDecimal? = null
		get() {

			if (field == null) {
				return if(balance != null){
					BigDecimal(balance!!.div(Constants.OtherConfig.MONEY_TO_DB_DOUBLE)).setScale(
						2,
						RoundingMode.HALF_UP
					)
				}else{
					BigDecimal(0)
				}
			}
			return field
		}
		set(value) {
			if (value != null) {
				balance = (value.multiply(BigDecimal(Constants.OtherConfig.MONEY_TO_DB_DOUBLE))).toLong()
				field = value
			}
		}




}
